package 剑指offer;

public class _52两个链表的第一个公共节点 {
	/**
	 * 
	 *@time 2021年3月21日上午8:38:27
	 * 
	 *@param headA
	 *@param headB
	 *@returnListNode
	 *
	 *@see 
	 *a:表示headA所有的节点数   ； b:表示headB所有的节点数； c:表示headA和headB的公共节点数
	 *头节点 headA 到 node 前，共有 a - c 个节点；
	 *头节点 headB 到 node 前，共有 b - c 个节点；
	 *指针 A 先遍历完链表 headA ，再开始遍历链表 headB ，当走到 node 时，共走步数为：a+(b−c)
	 *指针 B 先遍历完链表 headB ，再开始遍历链表 headA ，当走到 node 时，共走步数为：b+(a−c)
	 */
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode A = headA , B = headB;
        while( A != B) {
        	A = A == null ? headB : A.next;
        	B = B == null ? headA : B.next;
        }
        return A;
    }
}
